﻿using HDS.DistributorApi.Core.Entity;
using HDS.Model;
using HDS.Model.Entity.Master;
using HDS.Model.Entity.View;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace HDS.DistributorApi.Core
{
    public interface IDistributorPushApi
    {
        /// <summary>
        /// 加载分销商Config
        /// </summary>
        /// <param name="distributor"></param>
        /// <returns></returns>
        Task LoadConfig(DistributorConfig config);

        /// <summary>
        /// 推送确认有房
        /// </summary>
        /// <param name="distributor"></param>
        /// <param name="distributorOrderId"></param>
        /// <param name="orderId"></param>
        /// <returns></returns>
        Task<ResultData<string>> PushConfirmRoom(string distributor, string distributorOrderId, string orderId);

        /// <summary>
        /// 推送酒店确认号
        /// </summary>
        /// <param name="distributor"></param>
        /// <param name="distributorOrderId"></param>
        /// <param name="orderId"></param>
        /// <param name="hotelConfirmNo"></param>
        /// <returns></returns>
        Task<ResultData<string>> PushHotelConfirmNo(string distributor, string distributorOrderId, string orderId, string hotelConfirmNo);

        /// <summary>
        /// 推送酒店信息
        /// </summary>
        /// <param name="distributor"></param>
        /// <param name="hotelInfo"></param>
        /// <param name="compareMd5">比较md5，推送不一致</param>
        /// <returns></returns>
        Task<ResultData<VDistributorHotel>> PushHotelInfo(string distributor, VDistributorHotel hotelInfo);

        /// <summary>
        /// 推送删除酒店
        /// </summary>
        /// <param name="distributor"></param>
        /// <param name="distributorHotelId"></param>
        /// <param name="hotelId"></param>
        /// <returns></returns>
        Task<ResultData<VDistributorHotel>> PushDeleteHotel(string distributor, VDistributorHotel hotelInfo);

        /// <summary>
        ///  
        /// </summary>
        /// <param name="distributor"></param>
        /// <param name="hotelInfo"></param>
        /// <returns></returns>
        Task<ResultData<List<VDistributorRoom>>> PushRoomInfo(string distributor, List<VDistributorRoom> roomList);

        /// <summary>
        /// 查询推送信息结果
        /// </summary>
        /// <param name="distributor"></param>
        /// <param name="hotelId"></param>
        /// <returns></returns>
        Task<ResultData<CDistributorHotel>> QueryPushResult(string distributor, VDistributorHotel hotelInfo, List<VDistributorRoom> roomList);
    }
}
